package jm.nj.demo16main.demoProxy;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/*
* java.util.Collection集合类的工具类
*
* List<T> unmodifidbleList(List<? extends T> list)返回指定列表的不可修改视图
* * 返回指定列表的不可修改视图。此方法允许模块为用户提供对内部列表的“只读”访问。在返回的列表上执行的查询操作将“读完”指定的列表。
 * 试图修改返回的列表（不管是直接修改还是通过其迭代器进行修改）将导致抛出 UnsupportedOperationException。
 *
 * 方法unmodifiableList,参数需要传递List集合,方法的返回值返回List集合
 *
 * unmdifiableList 就是代理集合的代理人
 *  List集合被代理之后,执行size,get,没有对集合进行修改,代理人允许执行
 * List集合被代理之后,执行add,remove,set,对集合进行修改,代理人不允许执行,抛出异常
* */
public class Demo01Proxy {
    @Test
    public void demo01(){
        List<String> list = new ArrayList<String>();
        list.add("aaa");
        list.add("bbb");
        //调用unmdifiableList
        list = Collections.unmodifiableList(list);
        System.out.println(list.size());
        System.out.println(list.get(0));
       // list.add("加不了");
    }
}
